import axios from 'axios';

export const axiosInstance = axios.create({
  baseURL: process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3001',
  timeout: 10000,
});

// 请求拦截器：添加认证token
axiosInstance.interceptors.request.use(
  (config) => {
    console.log(`🚀 发起请求: ${config.method?.toUpperCase()} ${config.url}`);
    console.log('请求参数:', { params: config.params, data: config.data });

    const token = localStorage.getItem('token');
    const userStr = localStorage.getItem('user');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
      console.log('携带认证Token:', `Bearer ${token}`);
    }
    if (userStr) {
      try {
        const user = JSON.parse(userStr);
        if (user && user.id) {
          if (config.data instanceof FormData) {
            config.data.append('userId', user.id.toString());
          } else {
            config.data = config.data || {};
            config.data.userId = user.id;
            config.params = config.params || {};
            config.params.userId = user.id;
          }
          console.log('用户ID已添加到请求中:', user.id);
        } else {
          throw new Error('用户信息不完整');
        }
      } catch (error) {
        console.error('处理用户信息时出错:', error);
        localStorage.removeItem('user');
        window.location.href = '/login';
        return Promise.reject(new Error('用户未登录或登录信息无效'));
      }
    }
    return config;
  },
  (error) => {
    console.error('请求配置出错:', error);
    return Promise.reject(error);
  }
);

// 响应拦截器：处理错误
axiosInstance.interceptors.response.use(
  (response) => {
    console.log(`✅ 请求成功: ${response.config.method?.toUpperCase()} ${response.config.url}`);
    console.log('响应状态:', response.status);
    console.log('响应数据:', response.data);
    return response;
  },
  (error) => {
    console.error(`❌ 请求失败: ${error.config?.method?.toUpperCase()} ${error.config?.url}`);
    if (error.response?.status === 401) {
      console.error('未授权访问，重定向到登录页面');
      localStorage.removeItem('token');
      localStorage.removeItem('user');
     // window.location.href = '/login';
      return Promise.reject(new Error('用户未登录或登录信息无效'));
    } else if (error.response?.status === 403) {
      console.error('访问被拒绝：没有权限');
      return Promise.reject(new Error('没有权限访问此资源'));
    } else if (error.response?.status === 404) {
      console.error('请求的资源不存在');
      return Promise.reject(new Error('请求的资源不存在'));
    } else if (error.response?.data?.message) {
      console.error('服务器返回错误:', error.response.data.message);
      return Promise.reject(new Error(error.response.data.message));
    } else if (error.message === 'Network Error') {
      console.error('网络连接失败');
      return Promise.reject(new Error('网络连接失败，请检查网络设置'));
    } else {
      console.error('未知错误:', error);
      return Promise.reject(new Error('服务器错误，请稍后重试'));
    }
  }
);